import request from '@/utils/request'

/**
 * 获取启用的请假类型列表
 */
export function getLeaveTypes() {
  return request({
    url: '/leave/type/enabled',
    method: 'get'
  })
}

/**
 * 提交请假申请
 * @param {Object} data - 请假申请数据
 */
export function submitApplication(data) {
  return request({
    url: '/leave/application/submit',
    method: 'post',
    data
  })
}

/**
 * 查询我的请假记录
 * @param {Number} pageNum - 页码
 * @param {Number} pageSize - 每页条数
 */
export function getMyApplications(pageNum = 1, pageSize = 10) {
  return request({
    url: '/leave/application/my',
    method: 'get',
    params: { pageNum, pageSize }
  })
}

/**
 * 查询待审批列表
 * @param {Number} pageNum - 页码
 * @param {Number} pageSize - 每页条数
 */
export function getPendingApprovals(pageNum = 1, pageSize = 10) {
  return request({
    url: '/leave/application/pending',
    method: 'get',
    params: { pageNum, pageSize }
  })
}

/**
 * 审批请假申请
 * @param {Object} data - 审批数据
 */
export function approveApplication(data) {
  return request({
    url: '/leave/application/approve',
    method: 'post',
    data
  })
}

/**
 * 取消请假申请
 * @param {Number} id - 申请ID
 */
export function cancelApplication(id) {
  return request({
    url: `/leave/application/cancel/${id}`,
    method: 'put'
  })
}

/**
 * 查询所有请假申请（管理员）
 * @param {Number} pageNum - 页码
 * @param {Number} pageSize - 每页条数
 */
export function getAllApplications(pageNum = 1, pageSize = 10) {
  return request({
    url: '/leave/application/all',
    method: 'get',
    params: { pageNum, pageSize }
  })
}

/**
 * 查询审批历史（部门经理/管理员）
 * @param {Number} pageNum - 页码
 * @param {Number} pageSize - 每页条数
 */
export function getApprovalHistory(pageNum = 1, pageSize = 10) {
  return request({
    url: '/leave/application/history',
    method: 'get',
    params: { pageNum, pageSize }
  })
}

/**
 * 查询申请详情
 * @param {Number} id - 申请ID
 */
export function getApplicationDetail(id) {
  return request({
    url: `/leave/application/${id}`,
    method: 'get'
  })
}
